不定期更新
变量名
变量命名时尽量不要用type, class 这些名称,以免用的时候,报一些奇怪的错误。编译器不知道是,自定义的名,还是语法里的意思。comment 也是关键字,需自己导包,我也是服了。
eager
eager 谨慎使用,特别是relation有相互包含的时候。必须只能加在一边,防止重复包含,导致stack overflow。
eager 只会在find里生效,querybuilder 必须join
find
find 有很多选项足够用了可以代替 queryBuilder
OneToMany Save
例子: 商品储存多个价格, data 是发送的商品数据,其中包含了price
data.price = await this.priceRepository.save(price);
data = await this.repository.create(data);
return await this.repository.save(data);
注意 data.price 这一步是必须的,是为了更新刚储存完的id号,typeorm 用id 来建立关系
环境变量
process.env. 在for root里不好使,即使在main.ts里提前执行了config()。
非 for root 使用 require('dotenv').config() rocess.env.
for root 使用 aynscfor root
在服务器更新 .env 文件
##数据库更新
typeorm 更新的很随缘,如果发现数据格式不符bug。可以把dist文件夹删了 重跑一遍。
如 enum更新,或Column type更新
typeorm 从 entity.js 读取column 信息。
Controller
切记不要写这种路径 Get(':id') Get('user')
Swagger paramter
参数必须声明类型,swagger才能识别到
nestjsx/crud
版本最好4.6.0, 4.5同时get by id和relation会报sql syntax error
typescript
类型错误或不匹配时候可以强行转成any
You can always temporarily cast $ to any:
delete ($ as any).summernote
mysql: 3306 eradr
出现这个错误大概率是,.env或production.env 的问题,本地的话检查下port端口,设置为localhost
Observable
nestjs httpservice 默认返回Observable
Observable异常处理
.pipe(
catchError(err => {
return of(err.message);
}),
);
Observable值异步处理
result.subscribe((value)=> {
console.log(value);
});